什么是uboot与bios?

您所在的位置:网站首页 uefi bios 区别 什么是uboot与bios?

什么是uboot与bios?

2023-07-30 01:50| 来源: 网络整理| 查看: 265

title: what is uboot and bios? date: 2022-03-17 17:24:27 tags:

前言preface

​ 最近在漏洞挖掘过程中,涉及到了一些基础的知识比如BIOS,uboot,qemu模拟的方面。

​ 首先开始我们需要了解机器是怎么运行的

​ 一般我们使用的机器都是windows或者Linux,(本人是高端MAC本🤣),

什么是BIOS?他有什么用,他做了什么?按下开机键的时候机器干了啥?

​ 问:计算机是最讲逻辑,他会按照他的规则去运行,但是我们不知道他是怎么运行的,我们点开一个程序,或者说我们开机,计算机都会反馈给我们结果但是里面是怎样的呢,它对我们来说就像一个黑盒子,我们只要双击按钮。回到底层,当我们按下开机按钮的那一瞬间,计算机在干嘛呢?

​ 我是研究IOT方向与二进制方向所以逆向程序会非常多,(打开IDA好手就是我😁),当我们IDA打开程序,IDA会模拟程序,然后给出一串汇编指令和地址,我们运行程序CPU的指令指针寄存器就会指向到运行程序的汇编代码处。这里扯偏了。

​ 回到问题,按下开机键,其实我们的机器不会马上开始运行内核而是

​ CPU会上电,CS:IP复位好0xffff0 (其实就是IP寄存器)

​ 此时的话啥也没运行,内存没工作,显示器没亮CPU的IP寄存器访问到的地址就是我们大名鼎鼎的BIOS的ROM区

​ 然后就会接一个跳转指令跳转到BIOS的代码去运行,当运行完的时候又会接一个跳转指令,这时候我们的硬盘大哥马上就要来了

​ 硬盘大哥的引导分区,第一个扇区存储这boot的代码,当我们BIOS执行完就会跳到这里,当然boot执行完后也会接一个跳转跳转到load

boot作用: 1.清屏 2.设置光标 3.显示start boot信息 4.加载load程序到物理内存中 5.设置好CPU的CS:IP load作用: 1.加载内核

​ 到这里就应该知道急需要干啥了,load段就会把内核加载的内存中然后跳过去执行。然后内核操作系统就会控制显示屏键盘亮等一些列现象

​ 这就是windows电脑在开机时的动作(ps当然这是比较老的),我们看到电脑马上亮屏之前电脑还做了很多的操作,默默感叹… 答:计算机首先会执行bios然后bootload清屏加载内核点亮屏幕

​ BIOS是个人电脑启动时加载的第一个软件。其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 (来源百度百科)

Linux的Uboot

​ 前面说过我其实主要研究的是linux,因为大多数嵌入式设备内部都是linux,所以问题又来了,嵌入式设备是怎么启动的呢,为啥嵌入式设备启动这么快,像路由器,摄像头是即插即用

​ 问:嵌入式设备是怎么启动的呢,为啥嵌入式设备启动这么快,像路由器,摄像头是即插即用

​ 再次回到什么也没发生之前,应该都有了解嵌入式设备一般都是使用的精简指令集,所以一般来说也就不是我们常见的x86了,这里已嵌入式开发板为列子。

​ 1.首先嵌入式开发板上电,然后cpu开始运行

​ 2.然后cpu将固化在flash/ROM中的代码加载到RAM中运行,这段代码就是bootloader(uboot)

image-20220317163055538

image-20220317163309156 image-20220317163524997

​ 最后从flash中加载文件系统执行,配置网络服务等,执行preinit初始化脚本

​ 答:嵌入式设备分2中一种是linux内核一种是RTOS,RTOS的系统启动很快,linux相对较慢,由于内存较小,通过uboot加载内核,然后加载文件系统

最后可以通过查看/proc/mtd文件查看flash的文件分区情况TOTOLINK EX200如下

image-20220317170456820

RTOS

​ RTOS是即时操作系统,非常明显的是其固件非常小通过1M-2M,其中并没有像linux那样的完整的操作系统,将任务与进程 (挂钩,开机就会启动进程,所以速度较快,而且通常固件较难分析 ​



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3